require("dotenv").config();

const User = require("../model/user.model");
const Question = require("../model/question.model");
const Component = require("../model/component.model");
const Answer = require("../model/answer.model");

const seq = require("./seq");

// 同步所有模型到数据库
async function initDatabase() {
  try {
    // 测试数据库连接
    await seq.authenticate();
    console.log("数据库连接成功");

    // 同步所有模型
    await User.sync({ alter: true });
    console.log("用户模型同步完成");

    await Question.sync({ alter: true });
    console.log("问卷模型同步完成");

    await Component.sync({ alter: true });
    console.log("组件模型同步完成");

    await Answer.sync({ alter: true });
    console.log("答卷模型同步完成");

    // 创建默认管理员用户
    const res = await User.findOne({ where: { user_name: "admin" } });
    if (!res || !res.dataValues) {
      await User.create({
        user_name: "admin",
        nick_name: "管理员",
        is_admin: 1,
        password:
          "$2a$10$810FTW6RZOD8Uy79nMaNu.xEq5tmM5uv.WDnlasauUugtPOpgUFva", // 123456
      });
      console.log("默认管理员用户创建成功");
    } else {
      console.log("默认管理员用户已存在");
    }

    console.log("数据库初始化完成");
  } catch (error) {
    console.error("数据库初始化失败:", error);
  } finally {
    // 关闭数据库连接
    await seq.close();
  }
}

initDatabase();
